home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / 0Utils13.lha / 0Utils / Yes.c < prev    next >
C/C++ Source or Header  |  1995-04-05  |  3KB  |  134 lines

  1. /******************************************************************************
  2.  
  3.     MODULE
  4.     Yes.c
  5.  
  6.     DESCRIPTION
  7.     Output an endless stream of 'y' lines
  8.  
  9.     NOTES
  10.     Kickstart 2.0+ required
  11.     compiles w/ SAS/C v6.51
  12.  
  13.     BUGS
  14.     none known
  15.  
  16.     TODO
  17.  
  18.     EXAMPLES
  19.  
  20.     SEE ALSO
  21.  
  22.     INDEX
  23.  
  24.     HISTORY
  25.     (12-02-95 b_noll T created .c.Template)
  26.     (20-02-95 b_noll T added includes section)
  27.     (21-02-95 b_noll T added version/format-prefix/offset)
  28.     (20-03-95 b_noll T added args diagnostics)
  29.     05-04-95 b_noll created
  30.  
  31.     AUTHOR
  32.     Bernd Noll, Brunnenstrasse 55, D-67661 Kaiserslautern
  33.     b_noll@informatik.uni-kl.de
  34.  
  35. ******************************************************************************/
  36.  
  37. /**************************************
  38.         Includes
  39. **************************************/
  40.  
  41. #ifndef   EXEC_LIBRARIES_H
  42. # include <exec/libraries.h>
  43. #endif /* EXEC_LIBRARIES_H */
  44.  
  45. #ifndef   CLIB_EXEC_PROTOS_H
  46. # include <clib/exec_protos.h>
  47. #endif /* CLIB_EXEC_PROTOS_H */
  48.  
  49. #ifndef   DOS_DOS_H
  50. # include <dos/dos.h>
  51. #endif /* DOS_DOS_H */
  52.  
  53. #ifndef   CLIB_DOS_PROTOS_H
  54. # include <clib/dos_protos.h>
  55. #endif /* CLIB_DOS_PROTOS_H */
  56.  
  57. #include <proto/dos.h>
  58. #include <proto/exec.h>
  59.  
  60. /* ******************** USER INCLUDES ******************** */
  61.  
  62.  
  63. /* ******************** USER INCLUDES ******************** */
  64.  
  65. /**************************************
  66.      Defines & Structures
  67. **************************************/
  68.  
  69. struct _arg {
  70. /* ******************** USER FORMAT ******************** */
  71. #define FORMAT "STRING,LINES/N/K"
  72.  
  73.     STRPTR string;
  74.     ULONG *lines;
  75.  
  76. /* ******************** USER FORMAT ******************** */
  77. }; /* struct _argv */
  78.  
  79. #define MAXPATHLEN 256
  80. #define MAXLINELEN 256
  81.  
  82. #define VERSIONPREFIX    "$VER: "
  83. #define VERSIONOFFSET    0
  84. #define FORMATPREFIX    "$ARG: "
  85. #define FORMATOFFSET    6
  86.  
  87. /**************************************
  88.         Implementation
  89. **************************************/
  90.  
  91. long _main (void)
  92. {
  93.     const char* version = VERSIONPREFIX "Yes 1.0 " __AMIGADATE__ + VERSIONOFFSET;
  94.     long retval = RETURN_FAIL;
  95.     struct Library* SysBase = *((struct Library**)4L);
  96.     struct Library* DOSBase;
  97.  
  98.     if (DOSBase = OpenLibrary (DOSNAME, 37)) {
  99.     struct _arg argv = { 0 };
  100.     APTR   args;
  101.     retval     = RETURN_ERROR;
  102.     if (args = (void*)ReadArgs(FORMATPREFIX FORMAT + FORMATOFFSET, (LONG*)&argv, NULL)) {
  103.  
  104.         retval = RETURN_OK;
  105. /* ******************** USER BODY ******************** */
  106.         {
  107.         STRPTR string;
  108.         ULONG  count;
  109.         string = argv.string ? argv.string : "y\n";
  110.         count = argv.lines ? *argv.lines : ~0;
  111.         while (!CheckSignal(SIGBREAKF_CTRL_C) && count--) {
  112.             if (PutStr(string) != 0) {
  113.             retval = 10;
  114.             break;
  115.             } /* if */
  116.         } /* while */
  117.  
  118.         }
  119. /* ******************** USER BODY ******************** */
  120.         FreeArgs (args);
  121.     } /* if */
  122.  
  123.     if (retval > RETURN_WARN)
  124.         PrintFault(IoErr(), "Yes");
  125.  
  126.     CloseLibrary (DOSBase);
  127.     } /* if */
  128.     return (retval);
  129. } /* _main */
  130.  
  131. /******************************************************************************
  132. *****  END Yes.c
  133. ******************************************************************************/
  134.